﻿///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2023, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда

#Область ОбработчикиСобытий

Процедура ПередЗаписью(Отказ, Замещение)
	
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	
	ОтборПоДоверенности = Отбор.Найти("МашиночитаемаяДоверенность");
	ДополнительныеСвойства.Вставить("ТаблицаЗаписи", ПрочитатьСтатус(ОтборПоДоверенности.Значение));
		
КонецПроцедуры

Процедура ПриЗаписи(Отказ, Замещение)
	Если ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;

	ТаблицаЗаписи = ДополнительныеСвойства.ТаблицаЗаписи;

	ИзменившиесяСтатусы = Новый Соответствие;
		
	Для каждого Запись Из ЭтотОбъект Цикл
		Статусы = Новый Структура;
		Статусы.Вставить("НовыйСтатус", Запись.ТехническийСтатус);
		
		ЗаписьДоИзменения = ТаблицаЗаписи.Найти(Запись.МашиночитаемаяДоверенность, "МашиночитаемаяДоверенность");
		Если ЗаписьДоИзменения <> Неопределено Тогда
			Статусы.Вставить("СтатусДоИзменения", ЗаписьДоИзменения.ТехническийСтатус);
		Иначе
			Статусы.Вставить("СтатусДоИзменения", Перечисления.ТехническиеСтатусыМЧД.ПустаяСсылка());
		КонецЕсли;
		ИзменившиесяСтатусы.Вставить(Запись.МашиночитаемаяДоверенность, Статусы);
	КонецЦикла;
		
	Если ИзменившиесяСтатусы.Количество() > 0 Тогда
		МашиночитаемыеДоверенностиФНССлужебный.ПриИзмененииСтатусаДоверенности(ИзменившиесяСтатусы);
	КонецЕсли;	
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПрочитатьСтатус(МашиночитаемаяДоверенность)
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	|	ТекущиеЗаписи.МашиночитаемаяДоверенность КАК МашиночитаемаяДоверенность,
	|	ТекущиеЗаписи.ТехническийСтатус КАК ТехническийСтатус
	|ИЗ
	|	РегистрСведений.МашиночитаемыеДоверенностиСтатусы КАК ТекущиеЗаписи
	|ГДЕ
	|	ТекущиеЗаписи.МашиночитаемаяДоверенность = &МашиночитаемаяДоверенность";
	
	Запрос.УстановитьПараметр("МашиночитаемаяДоверенность", МашиночитаемаяДоверенность);
	
	Результат = Запрос.Выполнить();
	Возврат Результат.Выгрузить();
КонецФункции

#КонецОбласти

#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли
